# @author zfd
# @date 2022年12月13日 10:30
# @desc 参数定义，默认参数、可变位置形参，可变关键字形参，*，顺序为题

# 默认参数
def f1(a, b=10):
    pass


def f2(*args):
    print(args)


def f3(**args):
    print()


#  * 后面的c d 限制为只能通过变量名传参
def f4(a, b, *, c, d):
    print(a, b, c, d)


# TypeError: f4() takes 2 positional arguments but 4 were given
# f4(10, 20, 30, 40)
f4(10, 20, d=30, c=40)
f4(a=10, b=20, d=30, c=40)


# 顺序问题
def f5(a, b, *, c, d, **args):
    print(a, b, c, d, args)


f5(10, 20, c=1, d=20, x=[1, 23], y=(4, 6))


def f6(*a, **b):
    pass


def f7(a, b=10, *c, **d):
    pass
